package org.pupil.annotation;

import org.pupil.common.constants.FaultTolerant;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;


/**
 * @Description: 服务发现注解
 * @Author: pupil
 * @Date: 2024/07/16 下午 2:37
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD,ElementType.TYPE})
public @interface RpcReference {

    /**
     * 服务版本，默认1.0
     * @return
     */
    String version() default "1.0";

    /**
     * 容错策略，默认故障转移策略
     * @return
     */
    FaultTolerant faultTolerant() default FaultTolerant.Failover;

    /**
     * 异步等待超时时间，默认3000
     * @return
     */
    long time() default 3000;

    /**
     * 异步等待超时时间单位，默认毫秒
     * @return
     */
    TimeUnit timeUnit() default TimeUnit.MILLISECONDS;
}
